package cn.tedu.tmall.front.mall.service;

import cn.tedu.tmall.common.consts.data.MallConsts;
import cn.tedu.tmall.common.pojo.authentication.CurrentPrincipal;
import cn.tedu.tmall.front.mall.pojo.param.ReceiverAddressAddNewParam;
import cn.tedu.tmall.front.mall.pojo.vo.ReceiverAddressListItemVO;
import cn.tedu.tmall.front.mall.pojo.vo.ReceiverAddressStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface IReceiverAddressService extends MallConsts {

    /**
     * 新增收货地址
     *
     * @param currentPrincipal           当事人
     * @param receiverAddressAddNewParam 添加收货地址的参数类
     */
    void addNew(CurrentPrincipal currentPrincipal, ReceiverAddressAddNewParam receiverAddressAddNewParam);

    /**
     * 根据ID查询收货地址
     *
     * @param currentPrincipal   当事人
     * @param id                 收货地址ID
     * @return 匹配的收货地址数据详情，如果没有匹配的数据，则返回null
     */
    ReceiverAddressStandardVO getStandardById(CurrentPrincipal currentPrincipal,Long id);

    /**
     * 根据用户查询收货地址列表
     *
     * @param currentPrincipal 收货地址类别的ID
     * @return 收货地址列表
     */
    List<ReceiverAddressListItemVO> listByUser(CurrentPrincipal currentPrincipal);
}
